<?php
/**
 * @author daniel
 */
class Propiedades extends Controller {

	function Propiedades() {
		parent::Controller();

		$models = array(
			"comunas/comunas_model",
			"propiedades/tipos_tasaciones_model",
			"propiedades/estilos_propiedades_model",
			"propiedades/tipos_propiedades_model",
			"propiedades/disponibilidades_model",
			"propiedades/secciones_model",
			"propiedades/propietarios_model",
			"propiedades/propiedades_model",
			"propiedades/tasaciones_model",
			"propiedades/imagenes_propiedades",
			"buscadores/buscadores_model"
		);

		$this->load->model($models);

		$this->load->library("array_library");
		$this->load->library('autenticacion');

		$this->load->helper("file");
	}

	function _view_data_para_formulario_de_ingreso() {
		$data = array();
		$data["title"] = "titulo";
		$data["comunas"] = $this->comunas_model->listado_en_array_doble();
		$data["tipos_tasaciones_model"] = $this->tipos_tasaciones_model->listado_en_array_doble();
		$data["disponibilidades"] = $this->disponibilidades_model->listado_en_array_doble();
		$data["secciones"] = $this->secciones_model->listado_en_array_doble();
		$data["propiedades"] = $this->tipos_propiedades_model->listado_en_array_doble();
		$data["estilos_de_propiedad"] = $this->estilos_propiedades_model->listado_en_array_doble();

		return $data;
	}

	/**
	 * despliega el panel para subir una propiedad
	 */
	function nueva() {

            if ( ! $this->autenticacion->logged_in() ){
                $this->load->view('principal_login');
            }else{
                
                if( ! $this->autenticacion->is_admin() ){
                    $data = $this->_view_data_para_formulario_de_ingreso();
                    $this->load->view('propiedades/nueva', $data);
                }else{
                    $this->load->view('principal_login');
                }
            }

		
	}

	/**
	 * despliega el panel para subir una propiedad
	 */
	function crear() {
		$this->load->library('form_validation');

		/*
		 * validaciones propiedad
		 */
		$this->form_validation->set_rules('fecha_ingreso', 'Fecha de ingreso.', 'required');
		$this->form_validation->set_rules('direccion', 'Dirección.', 'required|min_length[5]|max_length[100]');
		$this->form_validation->set_rules('comuna', 'Comuna.', 'required|min_length[3]|max_length[50]');
		$this->form_validation->set_rules('referencia', 'Referencia.', 'required|min_length[3]|max_length[50]');
		$this->form_validation->set_rules('barrio', 'Barrio.', 'max_length[50]');
		$this->form_validation->set_rules('tipo_propiedad', 'Casa/Departamento.', 'required');

		/*
		 * validaciones duenho
		 */
		$this->form_validation->set_rules('nombre_duenho', 'Nombre.', 'required|max_length[100]');
		$this->form_validation->set_rules('email_duenho', 'E-mail.', 'valid_email');
		$this->form_validation->set_rules('direccion_duenho', 'Dirección.', 'required|min_length[5]|max_length[100]');
		$this->form_validation->set_rules('telefonos_duenho', 'Teléfonos.', 'required');

		/*
		 * validaciones tasacion
		 */
		$this->form_validation->set_rules('tipo_tasacion_tasacion', 'Venta/Arriendo', 'required');
		$this->form_validation->set_rules('disponibilidad_tasacion', 'Estado', 'required');
		$this->form_validation->set_rules('precio_tasacion', 'Precio', 'required');
		$this->form_validation->set_rules('seccion_tasacion', 'Sección', 'required');

		/*
		 * validaciones detalles
		 */
		$this->form_validation->set_rules('dormitorios', 'Dormitorios', '');
		$this->form_validation->set_rules('banhos', 'Baños', '');
		$this->form_validation->set_rules('descripcion', 'Descripción', '');
		$this->form_validation->set_rules('comentarios', 'Comentarios (no se publicará)', '');

        $this->form_validation->set_message('required', 'Debe introducir el campo %s');
        $this->form_validation->set_message('min_length', 'El campo %s debe ser de al menos %s carácteres');
        $this->form_validation->set_message('valid_email', 'Debe escribir una dirección de email correcta');
        $this->form_validation->set_message('max_length', 'El campo %s debe ser de un maximo de %s carácteres');
    
		if ($this->form_validation->run() == FALSE) {
			$data = $this->_view_data_para_formulario_de_ingreso();
			$this->load->view('propiedades/nueva', $data);
		} else {
			/*
			 * agrego al propietario
			 */
			$data_propietario = $_POST;
			$data_propietario = $this->array_library->preserve_matching_keys($data_propietario, 'duenho');
			$data_propietario = $this->array_library->replace_in_keys($data_propietario, '_duenho');

			$id_propietario = $this->propietarios_model->agregar_si_no_existe($data_propietario);

			/*
			 * agrego la propiedad
			 */
			$data_propiedad = $_POST;
			$data_propiedad = $this->array_library->remove_matching_keys($data_propiedad, '_duenho');
			$data_propiedad = $this->array_library->remove_matching_keys($data_propiedad, '_tasacion');
			$data_propiedad = $this->array_library->remove_matching_keys($data_propiedad, 'button');
			$data_propiedad = $this->array_library->remove_matching_keys($data_propiedad, 'id');
			$data_propiedad["id_usuario_publicador"] = $this->session->userdata('id');
			$data_propiedad["id_propietario"] = $id_propietario;

			$id_propiedad = $this->propiedades_model->agregar_propiedad($data_propiedad);

			/*
			 * agrego la tasacion
			 */
			$data_tasacion = $_POST;
			$data_tasacion = $this->array_library->preserve_matching_keys($data_tasacion, '_tasacion');
			$data_tasacion = $this->array_library->replace_in_keys($data_tasacion, '_tasacion');

            if($this->input->post( 'unidad_tasacion')=='UF'){
                $data_tasacion["precio"]= str_replace(",", ".", $this->input->post( 'precio_tasacion') );
            }else{
                $data_tasacion["precio"]= str_replace(".", "", $this->input->post( 'precio_tasacion') );
            }
			
			$data_tasacion["id_propiedad"] = $id_propiedad;
                        
			$this->tasaciones_model->agregar_tasacion($data_tasacion);

			/*
			 * agrego las imagenes adjuntas
			 */
			$config['upload_path'] = './imagenes/propiedades/';
			$config['allowed_types'] = 'gif|jpg|png|bmp';
			$config['max_size']    = '8192'; //4 meg

			$this->load->library("upload", $config);

			$files = $_FILES;
			foreach ($files as $name => $file) {
				if (!empty($file['name'])) {
					$this->upload->do_upload($name);
					$this->imagenes_propiedades->agregar_imagen($id_propiedad);
				}
			}
			redirect('usuarios', 'refresh');
		}
	}

	function listar_todas($limit = FALSE, $offset = 0) {
		$propiedades = $this->propiedades_model->listar_todas($limit, $offset);

		$data["propiedades"] = $propiedades;
		$data["muestra_detalles"] = true;
		$this->load->view("propiedades/listado_propiedades", $data);
	}

    function mis_propiedades() {
        $this->load->view("propiedades/mis_propiedades");
    }


        /**
         * Pestaña Menu Propiedades
         * Lista toda las propiedades
         *
         * @param <type> $limit
         * @param <type> $offset
         */
	function listar_todas_todas($page = 0) {
		$this->load->library("templator");
		$this->load->model("propiedades/propiedades_model");
		$this->load->library("pagination");

		$viewName = "propiedades/listado_propiedades";
		$viewData["propiedades"] = $this->propiedades_model->listar_todas($page);

		$pagination_config['base_url'] = site_url("propiedades/listar_todas_todas");
		$pagination_config['total_rows'] = $this->propiedades_model->contar_todas();
		$pagination_config['per_page'] = $this->config->item("per_page");

		$this->pagination->initialize($pagination_config);

		$this->templator->template_con_buscador($viewName, $viewData);
	}


	function detalle($id = FALSE){
		if ($id === FALSE) {
			return;
		}

		$data["datos_para_buscador_simple"] = $this->buscadores_model->datos_para_buscador_simple();
		$data["propiedad"] = $this->propiedades_model->buscar_propiedad($id);
		return $this->load->view("propiedades/detalle_propiedades", $data);
	}
}

/* End of file propiedades.php */
/* Location: ./system/application/controllers/propiedades.php */
